<?xml version="1.0"?>
<doc>
    <assembly>
        <name>HttpCompressionModule</name>
    </assembly>
    <members>
        <member name="T:blowery.Web.HttpModules.HttpCompressingFilter">
            <summary>
            Base for any HttpFilter that performing compression
            </summary>
            <remarks>
            When implementing this class, you need to implement a <see cref="T:blowery.Web.HttpModules.HttpOutputFilter"/>
            along with a NameOfContentEncoding property.  The latter corresponds to a 
            content coding (see http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.5)
            that your implementation will support.
            </remarks>
        </member>
        <member name="T:blowery.Web.HttpModules.HttpOutputFilter">
            <summary>
            The base of anything you want to latch onto the Filter property of a <see cref="T:System.Web.HttpResponse"/>
            object.
            </summary>
            <remarks>
            <p></p>These are generally used with the <see cref="T:blowery.Web.HttpModules.HttpCompressionModule"/> but you could really use them in
            other HttpModules.  This is a general, write-only stream that writes to some underlying stream.  When implementing
            a real class, you have to override void Write(byte[], int offset, int count).  Your work will be performed there.
            </remarks>
        </member>
        <member name="M:blowery.Web.HttpModules.HttpOutputFilter.#ctor(System.IO.Stream)">
            <summary>
            Subclasses need to call this on contruction to setup the underlying stream
            </summary>
            <param name="baseStream">The stream we're wrapping up in a filter</param>
        </member>
        <member name="M:blowery.Web.HttpModules.HttpOutputFilter.Seek(System.Int64,System.IO.SeekOrigin)">
            <summary>
            Not supported.  Throws an exception saying so.
            </summary>
            <exception cref="T:System.NotSupportedException">Thrown.  Always.</exception>
        </member>
        <member name="M:blowery.Web.HttpModules.HttpOutputFilter.SetLength(System.Int64)">
            <summary>
            Not supported.  Throws an exception saying so.
            </summary>
            <exception cref="T:System.NotSupportedException">Thrown.  Always.</exception>
        </member>
        <member name="M:blowery.Web.HttpModules.HttpOutputFilter.Close">
            <summary>
            Closes this Filter and the underlying stream.
            </summary>
            <remarks>
            If you override, call up to this method in your implementation.
            </remarks>
        </member>
        <member name="M:blowery.Web.HttpModules.HttpOutputFilter.Flush">
            <summary>
            Fluses this Filter and the underlying stream.
            </summary>
            <remarks>
            If you override, call up to this method in your implementation.
            </remarks>
        </member>
        <member name="M:blowery.Web.HttpModules.HttpOutputFilter.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Not supported.
            </summary>
            <param name="buffer">The buffer to write into.</param>
            <param name="offset">The offset on the buffer to write into</param>
            <param name="count">The number of bytes to write.  Must be less than buffer.Length</param>
            <returns>An int telling you how many bytes were written</returns>
        </member>
        <member name="P:blowery.Web.HttpModules.HttpOutputFilter.BaseStream">
            <summary>
            Allow subclasses access to the underlying stream
            </summary>
        </member>
        <member name="P:blowery.Web.HttpModules.HttpOutputFilter.CanRead">
            <summary>
            False.  These are write-only streams
            </summary>
        </member>
        <member name="P:blowery.Web.HttpModules.HttpOutputFilter.CanSeek">
            <summary>
            False.  These are write-only streams
            </summary>
        </member>
        <member name="P:blowery.Web.HttpModules.HttpOutputFilter.CanWrite">
            <summary>
            True.  You can write to the stream.  May change if you call Close or Dispose
            </summary>
        </member>
        <member name="P:blowery.Web.HttpModules.HttpOutputFilter.Length">
            <summary>
            Not supported.  Throws an exception saying so.
            </summary>
            <exception cref="T:System.NotSupportedException">Thrown.  Always.</exception>
        </member>
        <member name="P:blowery.Web.HttpModules.HttpOutputFilter.Position">
            <summary>
            Not supported.  Throws an exception saying so.
            </summary>
            <exception cref="T:System.NotSupportedException">Thrown.  Always.</exception>
        </member>
        <member name="M:blowery.Web.HttpModules.HttpCompressingFilter.#ctor(System.IO.Stream,blowery.Web.HttpModules.CompressionLevels)">
            <summary>
            Protected constructor that sets up the underlying stream we're compressing into
            </summary>
            <param name="baseStream">The stream we're wrapping up</param>
            <param name="compressionLevel">The level of compression to use when compressing the content</param>
        </member>
        <member name="P:blowery.Web.HttpModules.HttpCompressingFilter.NameOfContentEncoding">
            <summary>
            The name of the content-encoding that's being implemented
            </summary>
            <remarks>
            See http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.5 for more
            details on content codings.
            </remarks>
        </member>
        <member name="P:blowery.Web.HttpModules.HttpCompressingFilter.CompressionLevel">
            <summary>
            Allow inheriting classes to get access the the level of compression that should be used
            </summary>
        </member>
        <member name="T:blowery.Web.HttpModules.HttpCompressionModuleSectionHandler">
            <summary>
            This class acts as a factory for the configuration settings.
            </summary>
        </member>
        <member name="M:blowery.Web.HttpModules.HttpCompressionModuleSectionHandler.System#Configuration#IConfigurationSectionHandler#Create(System.Object,System.Object,System.Xml.XmlNode)">
            <summary>
            Create a new config section handler.  This is of type <see cref="T:blowery.Web.HttpModules.HttpCompressionModuleSettings"/>
            </summary>
        </member>
        <member name="T:blowery.Web.HttpModules.DeflateFilter">
            <summary>
            Summary description for DeflateFilter.
            </summary>
        </member>
        <member name="F:blowery.Web.HttpModules.DeflateFilter.m_stream">
            <summary>
            compression stream member
            has to be a member as we can only have one instance of the
            actual filter class
            </summary>
        </member>
        <member name="M:blowery.Web.HttpModules.DeflateFilter.#ctor(System.IO.Stream)">
            <summary>
            Basic constructor that uses the Normal compression level
            </summary>
            <param name="baseStream">The stream to wrap up with the deflate algorithm</param>
        </member>
        <member name="M:blowery.Web.HttpModules.DeflateFilter.#ctor(System.IO.Stream,blowery.Web.HttpModules.CompressionLevels)">
            <summary>
            Full constructor that allows you to set the wrapped stream and the level of compression
            </summary>
            <param name="baseStream">The stream to wrap up with the deflate algorithm</param>
            <param name="compressionLevel">The level of compression to use</param>
        </member>
        <member name="M:blowery.Web.HttpModules.DeflateFilter.Write(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Write out bytes to the underlying stream after compressing them using deflate
            </summary>
            <param name="buffer">The array of bytes to write</param>
            <param name="offset">The offset into the supplied buffer to start</param>
            <param name="count">The number of bytes to write</param>
        </member>
        <member name="M:blowery.Web.HttpModules.DeflateFilter.Close">
            <summary>
            Closes this Filter and calls the base class implementation.
            </summary>
        </member>
        <member name="P:blowery.Web.HttpModules.DeflateFilter.NameOfContentEncoding">
            <summary>
            Return the Http name for this encoding.  Here, deflate.
            </summary>
        </member>
        <member name="T:blowery.Web.HttpModules.HttpCompressionModule">
            <summary>
            An HttpModule that hooks onto the Response.Filter property of the
            current request and tries to compress the output, based on what
            the browser supports
            </summary>
            <remarks>
            <p>This HttpModule uses classes that inherit from <see cref="T:blowery.Web.HttpModules.HttpCompressingFilter"/>.
            We already support gzip and deflate (aka zlib), if you'd like to add 
            support for compress (which uses LZW, which is licensed), add in another
            class that inherits from HttpFilter to do the work.</p>
            
            <p>This module checks the Accept-Encoding HTTP header to determine if the
            client actually supports any notion of compression.  Currently, we support
            the deflate (zlib) and gzip compression schemes.  I chose not to implement
            compress, because it's uses lzw, which generally requires a license from 
            Unisys.  For more information about the common compression types supported,
            see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11 for details.</p> 
            </remarks>
            <seealso cref="T:blowery.Web.HttpModules.HttpCompressingFilter"/>
            <seealso cref="T:System.IO.Stream"/>
        </member>
        <member name="M:blowery.Web.HttpModules.HttpCompressionModule.System#Web#IHttpModule#Init(System.Web.HttpApplication)">
            <summary>
            Init the handler and fulfill <see cref="T:System.Web.IHttpModule"/>
            </summary>
            <remarks>
            This implementation hooks the BeginRequest event on the <see cref="T:System.Web.HttpApplication"/>.
            This should be fine.
            </remarks>
            <param name="context">The <see cref="T:System.Web.HttpApplication"/> this handler is working for.</param>
        </member>
        <member name="M:blowery.Web.HttpModules.HttpCompressionModule.System#Web#IHttpModule#Dispose">
            <summary>
            Implementation of <see cref="T:System.Web.IHttpModule"/>
            </summary>
            <remarks>
            Currently empty.  Nothing to really do, as I have no member variables.
            </remarks>
        </member>
        <member name="M:blowery.Web.HttpModules.HttpCompressionModule.CompressContent(System.Object,System.EventArgs)">
            <summary>
            EventHandler that gets ahold of the current request context and attempts to compress the output.
            </summary>
            <param name="sender">The <see cref="T:System.Web.HttpApplication"/> that is firing this event.</param>
            <param name="e">Arguments to the event</param>
        </member>
        <member name="M:blowery.Web.HttpModules.HttpCompressionModule.GetFilterForScheme(System.String,System.IO.Stream)">
            <summary>
            Get ahold of a <see cref="T:blowery.Web.HttpModules.HttpCompressingFilter"/> for the given encoding scheme.
            If no encoding scheme can be found, it returns null.
            </summary>
        </member>
        <member name="T:blowery.Web.HttpModules.GZipFilter">
            <summary>
            This is a little filter to support HTTP compression using GZip
            </summary>
        </member>
        <member name="F:blowery.Web.HttpModules.GZipFilter.m_stream">
            <summary>
            compression stream member
            has to be a member as we can only have one instance of the
            actual filter class
            </summary>
        </member>
        <member name="M:blowery.Web.HttpModules.GZipFilter.#ctor(System.IO.Stream)">
            <summary>
            Primary constructor.  Need to pass in a stream to wrap up with gzip.
            </summary>
            <param name="baseStream">The stream to wrap in gzip.  Must have CanWrite.</param>
        </member>
        <member name="M:blowery.Web.HttpModules.GZipFilter.Write(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Write content to the stream and have it compressed using gzip.
            </summary>
            <param name="buffer">The bytes to write</param>
            <param name="offset">The offset into the buffer to start reading bytes</param>
            <param name="count">The number of bytes to write</param>
        </member>
        <member name="M:blowery.Web.HttpModules.GZipFilter.Close">
            <summary>
            Closes this Filter and calls the base class implementation.
            </summary>
        </member>
        <member name="P:blowery.Web.HttpModules.GZipFilter.NameOfContentEncoding">
            <summary>
            The Http name of this encoding.  Here, gzip.
            </summary>
        </member>
        <member name="T:blowery.Web.HttpModules.HttpCompressionModuleSettings">
            <summary>
            This class encapsulates the settings for an HttpCompressionModule
            </summary>
        </member>
        <member name="M:blowery.Web.HttpModules.HttpCompressionModuleSettings.#ctor(System.Xml.XmlNode)">
            <summary>
            Create an HttpCompressionModuleSettings from an XmlNode
            </summary>
            <param name="node">The XmlNode to configure from</param>
        </member>
        <member name="M:blowery.Web.HttpModules.HttpCompressionModuleSettings.GetSettings">
            <summary>
            Get the current settings from the xml config file
            </summary>
        </member>
        <member name="F:blowery.Web.HttpModules.HttpCompressionModuleSettings.DEFAULT">
            <summary>
            The default settings.  Deflate + normal.
            </summary>
        </member>
        <member name="P:blowery.Web.HttpModules.HttpCompressionModuleSettings.PreferredAlgorithm">
            <summary>
            The preferred algorithm to use for compression
            </summary>
        </member>
        <member name="P:blowery.Web.HttpModules.HttpCompressionModuleSettings.CompressionLevel">
            <summary>
            The preferred compression level
            </summary>
        </member>
        <member name="T:blowery.Web.HttpModules.CompressionTypes">
            <summary>
            The available types of compression to use with the HttpCompressionModule
            </summary>
        </member>
        <member name="F:blowery.Web.HttpModules.CompressionTypes.Deflate">
            <summary>
            Use the deflate algorithm
            </summary>
        </member>
        <member name="F:blowery.Web.HttpModules.CompressionTypes.GZip">
            <summary>
            Use the gzip algorithm
            </summary>
        </member>
        <member name="T:blowery.Web.HttpModules.CompressionLevels">
            <summary>
            The level of compression to use with some algorithms
            </summary>
        </member>
        <member name="F:blowery.Web.HttpModules.CompressionLevels.Normal">
            <summary>
            Use a normal level of compression.  Compromises between speed and size
            </summary>
        </member>
        <member name="F:blowery.Web.HttpModules.CompressionLevels.High">
            <summary>
            Use a high level of compression.  Sacrifices speed for size.
            </summary>
        </member>
        <member name="F:blowery.Web.HttpModules.CompressionLevels.Low">
            <summary>
            Use a low level of compression.  Sacrifices size for speed.
            </summary>
        </member>
    </members>
</doc>
